home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Bank smakow / BankSmakow.air / BankSmakow.swf / scripts / mx / effects / effectClasses / RotateInstance.as < prev    next >
Text File  |  2009-12-16  |  3KB  |  96 lines

  1. package mx.effects.effectClasses
  2. {
  3.    import mx.core.mx_internal;
  4.    import mx.effects.EffectManager;
  5.    
  6.    use namespace mx_internal;
  7.    
  8.    public class RotateInstance extends TweenEffectInstance
  9.    {
  10.       
  11.       mx_internal static const VERSION:String = "3.5.0.12683";
  12.        
  13.       
  14.       public var originX:Number;
  15.       
  16.       public var originY:Number;
  17.       
  18.       private var centerX:Number;
  19.       
  20.       private var centerY:Number;
  21.       
  22.       public var angleTo:Number = 360;
  23.       
  24.       private var originalOffsetX:Number;
  25.       
  26.       private var originalOffsetY:Number;
  27.       
  28.       private var newX:Number;
  29.       
  30.       private var newY:Number;
  31.       
  32.       public var angleFrom:Number = 0;
  33.       
  34.       public function RotateInstance(param1:Object)
  35.       {
  36.          super(param1);
  37.       }
  38.       
  39.       override public function onTweenUpdate(param1:Object) : void
  40.       {
  41.          if(Math.abs(newX - target.x) > 0.1)
  42.          {
  43.             centerX = target.x + originalOffsetX;
  44.          }
  45.          if(Math.abs(newY - target.y) > 0.1)
  46.          {
  47.             centerY = target.y + originalOffsetY;
  48.          }
  49.          var _loc2_:Number = Number(param1);
  50.          var _loc3_:Number = Math.PI * _loc2_ / 180;
  51.          EffectManager.suspendEventHandling();
  52.          target.rotation = _loc2_;
  53.          newX = centerX - originX * Math.cos(_loc3_) + originY * Math.sin(_loc3_);
  54.          newY = centerY - originX * Math.sin(_loc3_) - originY * Math.cos(_loc3_);
  55.          newX = Number(newX.toFixed(1));
  56.          newY = Number(newY.toFixed(1));
  57.          target.move(newX,newY);
  58.          EffectManager.resumeEventHandling();
  59.       }
  60.       
  61.       override public function play() : void
  62.       {
  63.          super.play();
  64.          var _loc1_:Number = Math.PI * target.rotation / 180;
  65.          if(isNaN(originX))
  66.          {
  67.             originX = target.width / 2;
  68.          }
  69.          if(isNaN(originY))
  70.          {
  71.             originY = target.height / 2;
  72.          }
  73.          centerX = target.x + originX * Math.cos(_loc1_) - originY * Math.sin(_loc1_);
  74.          centerY = target.y + originX * Math.sin(_loc1_) + originY * Math.cos(_loc1_);
  75.          if(isNaN(angleFrom))
  76.          {
  77.             angleFrom = target.rotation;
  78.          }
  79.          if(isNaN(angleTo))
  80.          {
  81.             angleTo = target.rotation == 0 ? (angleFrom > 180 ? Number(360) : Number(0)) : Number(target.rotation);
  82.          }
  83.          tween = createTween(this,angleFrom,angleTo,duration);
  84.          target.rotation = angleFrom;
  85.          _loc1_ = Math.PI * angleFrom / 180;
  86.          EffectManager.suspendEventHandling();
  87.          originalOffsetX = originX * Math.cos(_loc1_) - originY * Math.sin(_loc1_);
  88.          originalOffsetY = originX * Math.sin(_loc1_) + originY * Math.cos(_loc1_);
  89.          newX = Number((centerX - originalOffsetX).toFixed(1));
  90.          newY = Number((centerY - originalOffsetY).toFixed(1));
  91.          target.move(newX,newY);
  92.          EffectManager.resumeEventHandling();
  93.       }
  94.    }
  95. }
  96.